package com.example.jdbc.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class JdbcConfigurationFinalEdition {

    /**
     * 优雅使用方式
     * @ConfigurationProperties(prefix="jdbc") 注解本质上是寻找
     * （在jdbc.properties,application.properties,application.yml ...）中以jdbc为前缀，
     * 并通过set()方法，完成对同名属性的注入（属性名不包含前缀）
     * 但是这个方法中新建的对象DruidDataSource中就刚好有与属性名对应的set()方法
     * @return
     */
    //@Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource getDataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();

        /** 刚好有属性名对应properties的set()方法，所以会自动注入
         druidDataSource.setUrl();
         druidDataSource.setDriverClassName();
         druidDataSource.setUsername();
         druidDataSource.setPassword(); */

        System.out.println("JdbcConfigurationFinalEdition.getDataSource 完成注入");
        return druidDataSource;

    }
}
